package com.bittrex.bittrex.controller;

import java.util.List;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import de.elbatya.cryptocoins.bittrexclient.BittrexClient;
import de.elbatya.cryptocoins.bittrexclient.api.model.common.ApiResult;
import de.elbatya.cryptocoins.bittrexclient.api.model.publicapi.Currency;
import de.elbatya.cryptocoins.bittrexclient.api.model.publicapi.Market;
import de.elbatya.cryptocoins.bittrexclient.api.model.publicapi.MarketHistoryEntry;
import de.elbatya.cryptocoins.bittrexclient.api.model.publicapi.MarketSummary;
import de.elbatya.cryptocoins.bittrexclient.api.model.publicapi.OrderBook;
import de.elbatya.cryptocoins.bittrexclient.api.model.publicapi.Ticker;

@RequestMapping("/public")
@RestController
public class BittrexPublicApiController
{
  
    /**
     * 
     * @创建人: Administrator
     * @方法描述:  用于获取bittrex的开放和可用于交易市场以及其它元数据
     * @创建时间: 2018年8月11日 上午11:00:15
     * @return
     * ApiResult<List<Market>>
     */
    @RequestMapping("/getmarkets")
    public ApiResult<List<Market>> getMarkets()
    {

        // Create a BittrexClient
        BittrexClient bittrexClient = new BittrexClient();

        // Perform a getMarkets request on the public api
        ApiResult<List<Market>> apiResult = bittrexClient.getPublicApi().getMarkets();

        // Unwrap the results
//        List<Market> markets = apiResult.unwrap();
        return apiResult;
    }
    
    /**
     * 
     * @创建人: Administrator
     * @方法描述:  用于获取bittrex中所有支持的货币以及其它元数据
     * @创建时间: 2018年8月11日 上午11:01:51
     * @return
     * ApiResult<List<Currency>>
     */
    @RequestMapping("/getcurrencies")
    public ApiResult<List<Currency>> getCurrencies()
    {

        // Create a BittrexClient
        BittrexClient bittrexClient = new BittrexClient();

        // Perform a getMarkets request on the public api
        ApiResult<List<Currency>> apiResult = bittrexClient.getPublicApi().getCurrencies();

        // Unwrap the results
//        List<Market> markets = apiResult.unwrap();
        return apiResult;
    }
    /**
     * 
     * @创建人: Administrator
     * @方法描述:  用于获取市场的当前刻度值  market 参数（BTC-LTC）
     * @创建时间: 2018年8月11日 上午11:02:31
     * @param market
     * @return
     * ApiResult<Ticker>
     */
    @RequestMapping("/getticker")
    public ApiResult<Ticker> getTicker(String market)
    {

        // Create a BittrexClient
        BittrexClient bittrexClient = new BittrexClient();

        // Perform a getMarkets request on the public api
        ApiResult<Ticker> apiResult = bittrexClient.getPublicApi().getTicker(market);

        // Unwrap the results
//        List<Market> markets = apiResult.unwrap();
        return apiResult;
    }
    
    /**
     * 
     * @创建人: Administrator
     * @方法描述:  用于获取所有活跃市场的最后24小时摘要
     * @创建时间: 2018年8月11日 上午11:06:30
     * @return
     * ApiResult<List<MarketSummary>>
     */
    @RequestMapping("/getmarketsummaries")
    public ApiResult<List<MarketSummary>> getMarketSummaries()
    {

        // Create a BittrexClient
        BittrexClient bittrexClient = new BittrexClient();

        // Perform a getMarkets request on the public api
        ApiResult<List<MarketSummary>> apiResult = bittrexClient.getPublicApi().getMarketSummaries();

        // Unwrap the results
//        List<Market> markets = apiResult.unwrap();
        return apiResult;
    }
    
    /**
     * 
     * @创建人: Administrator
     * @方法描述: 用于获取特定市场的最后24小时摘要
     * @创建时间: 2018年8月11日 上午11:09:35
     * @param market
     * @return
     * ApiResult<List<MarketSummary>>
     */
    @RequestMapping("/getmarketsummary")
    public ApiResult<List<MarketSummary>> getMarketsummary(String market)
    {

        // Create a BittrexClient
        BittrexClient bittrexClient = new BittrexClient();

        // Perform a getMarkets request on the public api
        ApiResult<List<MarketSummary>> apiResult = bittrexClient.getPublicApi().getMarketSummary(market);

        // Unwrap the results
//        List<Market> markets = apiResult.unwrap();
        return apiResult;
    }
    
    
    /**
     * 
     * @创建人: Administrator
     * @方法描述: 用于检索给定市场的订单 
     * @创建时间: 2018年8月11日 上午11:13:13
     * @param market
     * @return
     * ApiResult<OrderBook>
     */
    @RequestMapping("/getorderbook")
    public ApiResult<OrderBook> getOrderBook(String market)
    {

        // Create a BittrexClient
        BittrexClient bittrexClient = new BittrexClient();

        // Perform a getMarkets request on the public api
        ApiResult<OrderBook> apiResult = bittrexClient.getPublicApi().getOrderBook(market);

        // Unwrap the results
//        List<Market> markets = apiResult.unwrap();
        return apiResult;
    }
    
    /**
     * 
     * @创建人: Administrator
     * @方法描述:  用于检索特定市场发生的最新交易
     * @创建时间: 2018年8月11日 上午11:15:20
     * @param market
     * @return
     * ApiResult<List<MarketHistoryEntry>>
     */
    @RequestMapping("/getmarkethistory")
    public ApiResult<List<MarketHistoryEntry>> getMarketHistory(String market)
    {

        // Create a BittrexClient
        BittrexClient bittrexClient = new BittrexClient();

        // Perform a getMarkets request on the public api
        ApiResult<List<MarketHistoryEntry>> apiResult = bittrexClient.getPublicApi().getMarketHistory(market);

        // Unwrap the results
//        List<Market> markets = apiResult.unwrap();
        return apiResult;
    }
    
}
